fmap :: (a -> b) -> (a -> r) -> (b -> r)